package pers.chao.cacheable.core.annotation;

import pers.chao.cacheable.core.consts.PushDirection;
import pers.chao.cacheable.core.consts.RedisStructEnum;
import pers.chao.cacheable.core.consts.EvictEqType;

import java.lang.annotation.*;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RedisStruct(RedisStructEnum.LIST)
public @interface CacheList {
	// 缓存时的push方向
	PushDirection pushDirection() default PushDirection.RIGHT;
	// 元素清除的元素值指定
	String evictEq() default "";
	// list修剪，start,stop，大于两个元素时参数异常
	int[] trim() default {};
	// 是否整体替换(清除所有旧元素，缓存新元素)
	boolean replaceAll() default false;
	// 清除等值元素类型
	EvictEqType eqValueType() default EvictEqType.STRING;
}
